#pragma once

#ifndef ASSERTMSG
#define ASSERTMSG 
#endif


// Custom properties used by this service provider. These properties are
// non-transmittable and only used in the configuration and private
// profile section of this provider/service.
#define BASE_PROVIDER_ID                    0x6600  // Look at the comments in MAPITAGS.H

// Common Custom Properties for all WINDS service providers
#define PR_SMP_REMOTE_SERVER            PROP_TAG (PT_TSTRING,    (BASE_PROVIDER_ID + 0x0000))
#define PR_SMP_USER_NAME                PROP_TAG (PT_TSTRING,    (BASE_PROVIDER_ID + 0x0001))
#define PR_SMP_BROWSE_MB                PROP_TAG (PT_OBJECT,     (BASE_PROVIDER_ID + 0x0002))
#define PR_SMP_CHANGE_PASSWORD          PROP_TAG (PT_OBJECT,     (BASE_PROVIDER_ID + 0x0003))
#define PR_SMP_SESSION_UID              PROP_TAG (PT_BINARY,     (BASE_PROVIDER_ID + 0x0004))
#define PR_SMP_CONNECTION_TYPE          PROP_TAG (PT_LONG,       (BASE_PROVIDER_ID + 0x0005))

// Secured properties that users should not see by looking at the registry.
// On Windows NT the registry is secured by the system. On Windows 95, this
// properties are stored encrypted, along with the system's list of passwords
#define PR_SMP_STORE_NAME         PROP_TAG (PT_TSTRING,    (PROP_ID_SECURE_MIN + 0x0001))
#define PR_SMP_STORE_ID           PROP_TAG (PT_LONG,       (PROP_ID_SECURE_MIN + 0x0002))
#define PR_SMP_USER_PASSWORD     PROP_TAG (PT_TSTRING,    (PROP_ID_SECURE_MIN + 0x0003))


enum
{
	SERVER_NAME				= 0,        // Array Indexes
	USER_NAME				= 1,
	USER_PASSWORD			= 2,
	STORE_ID				= 3,
	NUM_LOGON_PROPERTIES	= 4         // Array Size
};

const static SizedSPropTagArray(NUM_LOGON_PROPERTIES, sptLogonProps) =
{
	NUM_LOGON_PROPERTIES,
	{
		PR_SMP_REMOTE_SERVER,		// DON'T CHANGE THE ORDER OF THIS PROPERTY  (position 0)
			PR_SMP_USER_NAME,			// DON'T CHANGE THE ORDER OF THIS PROPERTY  (position 1)
			PR_SMP_USER_PASSWORD,		// DON'T CHANGE THE ORDER OF THIS PROPERTY  (position 2)
			PR_SMP_STORE_ID,			// DON'T CHANGE THE ORDER OF THIS PROPERTY  (position 3)
	}
};


HRESULT WINAPI OpenServiceProfileSection (LPMAPISUP    pSupObj,
										  LPPROFSECT * ppProfSectObj,
										  LPFREEBUFFER pfnFreeBuffer);

